<?php
/* SVN FILE: $Id$ */
/**
 * Short description for file.
 *
 * This file is application-wide controller file. You can put all
 * application-wide controller-related methods here.
 *
 * PHP versions 4 and 5
 *
 * CakePHP(tm) :  Rapid Development Framework (http://www.cakephp.org)
 * Copyright 2005-2008, Cake Software Foundation, Inc. (http://www.cakefoundation.org)
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 * @filesource
 * @copyright     Copyright 2005-2008, Cake Software Foundation, Inc. (http://www.cakefoundation.org)
 * @link          http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project
 * @package       cake
 * @subpackage    cake.app
 * @since         CakePHP(tm) v 0.2.9
 * @version       $Revision$
 * @modifiedby    $LastChangedBy$
 * @lastmodified  $Date$
 * @license       http://www.opensource.org/licenses/mit-license.php The MIT License
 */
/**
 * Short description for class.
 *
 * Add your application-wide methods in the class below, your controllers
 * will inherit them.
 *
 * @package       cake
 * @subpackage    cake.app
 */
/*
 * Modified by: Miguel Zilli
 * Email: miguelzilli@gmail.com
 */
class AppController extends Controller {
    var $ID_AGRICOLA=null;
    var $ID_FRUTIHORTICOLA=null;
    var $CAMPANIAS=null;

/*
 * configuraciones inciales para que esten disponible en todos lo controladores.
 * se configuran la salidas de debug, el layout, la pageTitle y los id's de actividadtipos.
 * estas ultimas deben corresponderse con los valores en la base de datos.
 */
    function AppController(){
        $this->__construct();
    }

    function __construct(){
        parent::__construct();
        if($_SERVER['SERVER_ADDR'] == '127.0.0.1'){
            Configure::write("debug",2);
        }
        $this->layout = 'sist_integral';
        $this->pageTitle = 'SisAlgodón';
        $this->ID_AGRICOLA=Configure::read("Actividades.agricola");
        $this->ID_FRUTIHORTICOLA=Configure::read("Actividades.frutihorticola");
        $this->CAMPANIAS=Configure::read("Sistema.campanias");
//        $anio=date('Y');
//        for ($i=($anio); $i<=($anio); $i++){
//            $j=$i+1;
//            $this->CAMPANIAS["{$i}-{$j}"]="{$i}-{$j}";
//        }
    }

/*
 * comprueba que un usuario este logeado en el sistema.
 * esta funcion se ejecuta antes de cada accion en un controlador.
 */
    function beforeFilter(){
        $this->__validateLoginStatus();
    }

    function __validateLoginStatus(){
        if($this->action != 'login' && $this->action != 'logout'){
            if($this->Session->check('Usuario') == false){
                $this->redirect('/usuarios/login');
                $this->Session->setFlash('Error: Debe iniciar sesión.');
            }
        }
    }

/*
 * comprueba que el usuario que esta logueado sea un administrador
 * de lo contrario redirige al home con un mensaje de error.
 * usado en todas las acciones que requieran permisos de administrador.
 */
    function __checkAdmin(){
        $permitir=($this->Session->read('Usuario.tipo')=='ADMIN');
        if (!$permitir){
            $this->Session->setFlash('Error: Ud no tiene los permisos necesarios.');
            $this->redirect('/');
        }
    }

/*
 * comprueba que el usuario que esta logueado sea un administrador o que sea el
 * usuario que dio de alta al productor con id=$id_productor.
 * usado para que los administradores puedan modificar datos de productores
 * y que los distintos usuarios modifiquen solo los datos de sus productores.
 * si el parametro $id_productor es nulo se comporta igual que __checkAdmin().
 * pero da error si no se incluye Productor en la variable $uses en el controlador.
 */
    function __checkPermisos($id_productor=null){
        $productor_acoentidad_id=$this->Productor->field('Productor.acoentidad_id',array('Productor.id'=>$id_productor));
        $permitir=(($this->Session->read('Usuario.tipo')=='ADMIN') OR
            (($this->Session->read('Usuario.acoentidad_id')==$productor_acoentidad_id)));
        if (!$permitir){
            $this->Session->setFlash('Error: Ud no tiene los permisos necesarios.');
            $this->redirect('/');
        }
    }
}
?>